home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / KeyStroke.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  6.3 KB  |  311 lines

  1. package javax.swing;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.event.InputEvent;
  5. import java.awt.event.KeyEvent;
  6. import java.io.Serializable;
  7. import java.util.StringTokenizer;
  8.  
  9. public class KeyStroke implements Serializable {
  10.    private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey");
  11.    private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey");
  12.    private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey");
  13.    private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey");
  14.    char keyChar;
  15.    int keyCode;
  16.    int modifiers;
  17.    boolean onKeyRelease;
  18.    static final int MIN_ASCII_CACHE_INDEX = 10;
  19.    static final int MAX_ASCII_CACHE_INDEX = 127;
  20.    private static final Object classLock = new Object();
  21.    private static ModifierKeyword[] modifierKeywords = new ModifierKeyword[]{new ModifierKeyword("shift", 1), new ModifierKeyword("control", 2), new ModifierKeyword("ctrl", 2), new ModifierKeyword("meta", 4), new ModifierKeyword("alt", 8), new ModifierKeyword("button1", 16), new ModifierKeyword("button2", 8), new ModifierKeyword("button3", 4)};
  22.    // $FF: synthetic field
  23.    static Class class$java$awt$event$KeyEvent;
  24.  
  25.    private KeyStroke() {
  26.    }
  27.  
  28.    static void cacheKeyCharKeyStroke(KeyStroke var0, boolean var1) {
  29.       if (var0.keyChar >= '\n' && var0.keyChar < 127) {
  30.          Object var2 = classLock;
  31.          synchronized(var2){}
  32.  
  33.          try {
  34.             if (var1) {
  35.                KeyStroke[] var4 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  36.                if (var4 == null) {
  37.                   var4 = new KeyStroke[117];
  38.                   SwingUtilities.appContextPut(releasedCharCacheKey, var4);
  39.                }
  40.  
  41.                var4[var0.keyChar - 10] = var0;
  42.             } else {
  43.                KeyStroke[] var7 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  44.                if (var7 == null) {
  45.                   var7 = new KeyStroke[117];
  46.                   SwingUtilities.appContextPut(pressedCharCacheKey, var7);
  47.                }
  48.  
  49.                var7[var0.keyChar - 10] = var0;
  50.             }
  51.          } catch (Throwable var6) {
  52.             throw var6;
  53.          }
  54.       }
  55.  
  56.    }
  57.  
  58.    static void cacheKeyStroke(KeyStroke var0) {
  59.       int var1 = -1;
  60.       if (var0.keyCode >= 10 && var0.keyCode < 127 && (var1 = subIndexForModifier(var0.modifiers)) != -1) {
  61.          Object var2 = classLock;
  62.          synchronized(var2){}
  63.  
  64.          try {
  65.             Object var4 = null;
  66.             KeyStroke[][] var9;
  67.             if (var0.onKeyRelease) {
  68.                KeyStroke[][] var5 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  69.                if (var5 == null) {
  70.                   var5 = new KeyStroke[4][117];
  71.                   SwingUtilities.appContextPut(pressedCodeCacheKey, var5);
  72.                }
  73.  
  74.                var9 = var5;
  75.             } else {
  76.                KeyStroke[][] var10 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  77.                if (var10 == null) {
  78.                   var10 = new KeyStroke[4][117];
  79.                   SwingUtilities.appContextPut(releasedCodeCacheKey, var10);
  80.                }
  81.  
  82.                var9 = var10;
  83.             }
  84.  
  85.             var9[var1][var0.keyCode - 10] = var0;
  86.          } catch (Throwable var7) {
  87.             throw var7;
  88.          }
  89.       }
  90.  
  91.    }
  92.  
  93.    // $FF: synthetic method
  94.    static Class class$(String var0) {
  95.       try {
  96.          return Class.forName(var0);
  97.       } catch (ClassNotFoundException var2) {
  98.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  99.       }
  100.    }
  101.  
  102.    public boolean equals(Object var1) {
  103.       if (var1 instanceof KeyStroke) {
  104.          KeyStroke var2 = (KeyStroke)var1;
  105.          if (var2.keyChar == this.keyChar && var2.keyCode == this.keyCode && var2.onKeyRelease == this.onKeyRelease && var2.modifiers == this.modifiers) {
  106.             return true;
  107.          }
  108.       }
  109.  
  110.       return false;
  111.    }
  112.  
  113.    static KeyStroke getCachedKeyCharKeyStroke(char var0, boolean var1) {
  114.       KeyStroke var2 = null;
  115.       if (var0 >= '\n' && var0 < 127) {
  116.          Object var3 = classLock;
  117.          synchronized(var3){}
  118.  
  119.          try {
  120.             KeyStroke[] var5;
  121.             if (var1) {
  122.                var5 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  123.             } else {
  124.                var5 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  125.             }
  126.  
  127.             if (var5 != null) {
  128.                var2 = var5[var0 - 10];
  129.             }
  130.          } catch (Throwable var7) {
  131.             throw var7;
  132.          }
  133.       }
  134.  
  135.       return var2;
  136.    }
  137.  
  138.    static KeyStroke getCachedKeyStroke(int var0, int var1, boolean var2) {
  139.       KeyStroke var4 = null;
  140.       int var3;
  141.       if (var0 >= 10 && var0 < 127 && (var3 = subIndexForModifier(var1)) != -1) {
  142.          Object var5 = classLock;
  143.          synchronized(var5){}
  144.  
  145.          try {
  146.             KeyStroke[][] var7;
  147.             if (var2) {
  148.                var7 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  149.             } else {
  150.                var7 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  151.             }
  152.  
  153.             if (var7 != null) {
  154.                var4 = var7[var3][var0 - 10];
  155.             }
  156.          } catch (Throwable var9) {
  157.             throw var9;
  158.          }
  159.       }
  160.  
  161.       return var4;
  162.    }
  163.  
  164.    public char getKeyChar() {
  165.       return this.keyChar;
  166.    }
  167.  
  168.    public int getKeyCode() {
  169.       return this.keyCode;
  170.    }
  171.  
  172.    public static KeyStroke getKeyStroke(char var0) {
  173.       return getKeyStroke(var0, false);
  174.    }
  175.  
  176.    /** @deprecated */
  177.    public static KeyStroke getKeyStroke(char var0, boolean var1) {
  178.       KeyStroke var2 = getCachedKeyCharKeyStroke(var0, var1);
  179.       if (var2 == null) {
  180.          var2 = new KeyStroke();
  181.          var2.keyChar = var0;
  182.          var2.modifiers = 0;
  183.          var2.onKeyRelease = var1;
  184.          cacheKeyCharKeyStroke(var2, var1);
  185.       }
  186.  
  187.       return var2;
  188.    }
  189.  
  190.    public static KeyStroke getKeyStroke(int var0, int var1) {
  191.       return getKeyStroke(var0, var1, false);
  192.    }
  193.  
  194.    public static KeyStroke getKeyStroke(int var0, int var1, boolean var2) {
  195.       KeyStroke var3 = getCachedKeyStroke(var0, var1, var2);
  196.       if (var3 == null) {
  197.          var3 = new KeyStroke();
  198.          var3.keyCode = var0;
  199.          var3.modifiers = var1;
  200.          var3.onKeyRelease = var2;
  201.          cacheKeyStroke(var3);
  202.       }
  203.  
  204.       return var3;
  205.    }
  206.  
  207.    public static KeyStroke getKeyStroke(String var0) {
  208.       StringTokenizer var1 = new StringTokenizer(var0);
  209.  
  210.       String var2;
  211.       int var4;
  212.       for(int var3 = 0; (var2 = var1.nextToken()) != null; var3 |= var4) {
  213.          var4 = 0;
  214.  
  215.          for(int var5 = 0; var4 == 0 && var5 < modifierKeywords.length; ++var5) {
  216.             var4 = modifierKeywords[var5].getModifierMask(var2);
  217.          }
  218.  
  219.          if (var4 == 0) {
  220.             String var6 = versionMap("VK_" + var2);
  221.  
  222.             int var7;
  223.             try {
  224.                var7 = (class$java$awt$event$KeyEvent != null ? class$java$awt$event$KeyEvent : (class$java$awt$event$KeyEvent = class$("java.awt.event.KeyEvent"))).getField(var6).getInt(class$java$awt$event$KeyEvent != null ? class$java$awt$event$KeyEvent : (class$java$awt$event$KeyEvent = class$("java.awt.event.KeyEvent")));
  225.             } catch (Exception var9) {
  226.                ((Throwable)var9).printStackTrace();
  227.                throw new Error("Unrecognized keycode name: " + var6);
  228.             }
  229.  
  230.             return getKeyStroke(var7, var3);
  231.          }
  232.       }
  233.  
  234.       throw new Error("Can't parse KeyStroke: \"" + var0 + "\"");
  235.    }
  236.  
  237.    public static KeyStroke getKeyStrokeForEvent(KeyEvent var0) {
  238.       KeyStroke var1 = null;
  239.       switch (((AWTEvent)var0).getID()) {
  240.          case 400:
  241.             var1 = getKeyStroke(var0.getKeyChar());
  242.             break;
  243.          case 401:
  244.             var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), false);
  245.             break;
  246.          case 402:
  247.             var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), true);
  248.       }
  249.  
  250.       return var1;
  251.    }
  252.  
  253.    public int getModifiers() {
  254.       return this.modifiers;
  255.    }
  256.  
  257.    private static String getStringRepresentation(char var0, int var1, boolean var2) {
  258.       return "keyChar " + KeyEvent.getKeyModifiersText(var1) + var0 + (var2 ? "-R" : "-P");
  259.    }
  260.  
  261.    private static String getStringRepresentation(int var0, int var1, boolean var2) {
  262.       return "keyCode " + KeyEvent.getKeyModifiersText(var1) + KeyEvent.getKeyText(var0) + (var2 ? "-R" : "-P");
  263.    }
  264.  
  265.    public int hashCode() {
  266.       return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2);
  267.    }
  268.  
  269.    public boolean isOnKeyRelease() {
  270.       return this.onKeyRelease;
  271.    }
  272.  
  273.    static int subIndexForModifier(int var0) {
  274.       if (var0 == 0) {
  275.          return 0;
  276.       } else if (var0 == 1) {
  277.          return 1;
  278.       } else if (var0 == 2) {
  279.          return 2;
  280.       } else {
  281.          return var0 == 8 ? 3 : -1;
  282.       }
  283.    }
  284.  
  285.    public String toString() {
  286.       return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease);
  287.    }
  288.  
  289.    private static String versionMap(String var0) {
  290.       if (!SwingUtilities.is1dot2) {
  291.          if (var0.equals("VK_KP_UP")) {
  292.             var0 = "VK_UP";
  293.          }
  294.  
  295.          if (var0.equals("VK_KP_DOWN")) {
  296.             var0 = "VK_DOWN";
  297.          }
  298.  
  299.          if (var0.equals("VK_KP_LEFT")) {
  300.             var0 = "VK_LEFT";
  301.          }
  302.  
  303.          if (var0.equals("VK_KP_RIGHT")) {
  304.             var0 = "VK_RIGHT";
  305.          }
  306.       }
  307.  
  308.       return var0;
  309.    }
  310. }
  311.